package xin.clips.system.service.impl;

import java.util.List;

import xin.clips.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import xin.clips.system.mapper.SysVisitLogMapper;
import xin.clips.system.domain.SysVisitLog;
import xin.clips.system.service.ISysVisitLogService;
import xin.clips.common.core.text.Convert;

/**
 * 系统访问日志Service业务层处理
 *
 * @author yuanzy
 * @date 2023-02-27
 */
@Service
public class SysVisitLogServiceImpl implements ISysVisitLogService {
    @Autowired
    private SysVisitLogMapper sysVisitLogMapper;

    /**
     * 查询系统访问日志
     *
     * @param visitId 系统访问日志主键
     * @return 系统访问日志
     */
    @Override
    public SysVisitLog selectSysVisitLogByVisitId(Long visitId) {
        return sysVisitLogMapper.selectSysVisitLogByVisitId(visitId);
    }

    /**
     * 查询系统访问日志列表
     *
     * @param sysVisitLog 系统访问日志
     * @return 系统访问日志
     */
    @Override
    public List<SysVisitLog> selectSysVisitLogList(SysVisitLog sysVisitLog) {
        return sysVisitLogMapper.selectSysVisitLogList(sysVisitLog);
    }

    /**
     * 新增系统访问日志
     *
     * @param sysVisitLog 系统访问日志
     * @return 结果
     */
    @Override
    public int insertSysVisitLog(SysVisitLog sysVisitLog) {
        sysVisitLog.setCreateTime(DateUtils.getNowDate());
        return sysVisitLogMapper.insertSysVisitLog(sysVisitLog);
    }

    /**
     * 修改系统访问日志
     *
     * @param sysVisitLog 系统访问日志
     * @return 结果
     */
    @Override
    public int updateSysVisitLog(SysVisitLog sysVisitLog) {
        return sysVisitLogMapper.updateSysVisitLog(sysVisitLog);
    }

    /**
     * 批量删除系统访问日志
     *
     * @param visitIds 需要删除的系统访问日志主键
     * @return 结果
     */
    @Override
    public int deleteSysVisitLogByVisitIds(String visitIds) {
        return sysVisitLogMapper.deleteSysVisitLogByVisitIds(Convert.toStrArray(visitIds));
    }

    /**
     * 删除系统访问日志信息
     *
     * @param visitId 系统访问日志主键
     * @return 结果
     */
    @Override
    public int deleteSysVisitLogByVisitId(Long visitId) {
        return sysVisitLogMapper.deleteSysVisitLogByVisitId(visitId);
    }

    public void cleanVisitLog() {
        sysVisitLogMapper.cleanVisitLog();
    }

    /**
     * 用户访问日志统计
     *
     * @return
     */
    public List<SysVisitLog> selectVisitLogByModuleName() {
        return sysVisitLogMapper.selectVisitLogByModuleName();
    }

    /**
     * 根据日期统计查询每日访问量
     *
     * @param sysVisitLog 系统访问日志
     * @return 系统访问日志集合
     */
    public List<SysVisitLog> selectVisitDayAnalyByTime(SysVisitLog sysVisitLog){
        return  sysVisitLogMapper.selectVisitDayAnalyByTime(sysVisitLog);
    }

    public List<SysVisitLog> selectVisitTop3(SysVisitLog sysVisitLog){
        return  sysVisitLogMapper.selectVisitTop3(sysVisitLog);
    }

    @Override
    public Long selectTotal() {
        return sysVisitLogMapper.selectTotal();
    }

}
